#!/bin/bash
echo "Hello World !"

# 变量
#定义变量
#   【注意】 等号两边不能有空格
#   声明变量不需要约定数据类型
#   变量的数据类型可以随时改变
#   引用变量 ： $变量名 ，${变量名}
#   使用 readonly 声明的变量是只读变量，不可修改删除
#   删除变量 ： unset 变量名
#   访问不存在的变量时，返回空

your_name="wdp"
#your_name ="wdp" # 错误 ，存在空格
#your_name = "wdp" # 错误 ，存在空格

echo -e "第一种引用方式\$VarName---> $your_name"
echo  -e "第一种引用方式\${VarName}---> ${your_name}"

your_name=2 # 重新赋值
echo $your_name

your_name=true # 重新赋值
echo $your_name

your_name=23.5 # 重新赋值
echo $your_name
echo '------------------------------'

for skill in Ada Coffe Action Java; do
    echo "I am good at ${skill}Script"
done
echo '--------- readonly variable ---------------------'
# 无法修改，删除
readonly name='hello'
echo $name
echo '------------------------------'

unset your_name
echo $your_name
echo $your_name2


echo '--------------- variable type ---------------'
# 局部变量 : 在脚本或命令中定义的，仅在当前shell实例中有效，其他shell实例无法访问
# 环境变量 : 所有的程序都能访问。必要时shell脚本也可以定义，但不推荐
# shell变量 : shell程序设置的特殊变量。shell变量有一部分时环境变量，有一部分时局部变量。可保证shell的正常运行。

echo '--------------- shell string ---------------'
# 可用 单引号，双引号，也可不用引号 直接表示。
# 单引号表示 ： 不可变量解析，可转义
# 双引号表示 ： 可解析变量，可转义
# 不用引号表示 ：可解析变量，不可转义，不能出现空格
# 【注意】 echo -e 才能使 转义符生效
vari=12
echo -e 'this is a string \n $vari'
echo -e "this is a string\n $vari"
str3=thisisastring$vari\n\n
echo -e $str3

# 字符串拼接 ： 直接拼接
your_name="runoob"
greeting1="hello, "$your_name" !\n"
greeting2='hello, '$your_name' !'
echo -e $greeting1  $greeting2
echo '------------------------------'
